package com.javasm.commons.config;

import com.javasm.commons.util.Constants;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CrosConfig {
//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        //CorsRegistration addMapping(String pathPattern): 添加路径映射，如 /admin/info，或者 /admin/**
//        registry.addMapping("/**")
//                //是否发送Cookie
//                .allowCredentials(true)
//                //放行哪些原始域, * 表示所有
//                .allowedOrigins(new String[]{"http://localhost:8088"})
//                //放行哪些请求方式
//                .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE","OPTIONS"})
//                //放行哪些原始请求头部信息
//                .allowedHeaders("*");
//        //暴露哪些头部信息，不能设置为 * : .exposedHeaders();
//    }

//    @Bean
//    public FilterRegistrationBean<CorsFilter> corsFilter()
//    {
//        FilterRegistrationBean<CorsFilter> bean  = new FilterRegistrationBean<>();
//        bean.setFilter(new CorsFilter( corsConfiguration()));
//        bean.setOrder(-150);
//
//        return bean;
//    }

//    public UrlBasedCorsConfigurationSource corsConfiguration()
//    {
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//        CorsConfiguration config = new CorsConfiguration();
//        config.setAllowCredentials(true);
//        // 设置访问源地址
//        config.addAllowedOrigin("*");
//        // 设置访问源请求头
//        config.addAllowedHeader("*");
//        // 设置访问源请求方法
//        config.addAllowedMethod("*");
//        // 允许暴露出去的自定义响应头
//        config.addExposedHeader(Constants.ADMIN_TOKEN);
//        // 对接口配置跨域设置
//        source.registerCorsConfiguration("/**", config);
//        return source;
//    }
}
